package com.zzg.srb.core;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@SpringBootTest(classes = CodeGenerator.class)
public class CodeGenerator {

    @Test
    void test01(){
        String url = "jdbc:mysql://localhost:3306/db_srb_core?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";


        //表名集合
        List<String> tables = new ArrayList<>();
        tables.add("borrow_info");
        tables.add("borrower");
        tables.add("borrower_attach");
        tables.add("dict");
        tables.add("integral_grade");
        tables.add("lend");
        tables.add("lend_item");
        tables.add("lend_item_return");
        tables.add("lend_return");
        tables.add("trans_flow");
        tables.add("user_account");
        tables.add("user_bind");
        tables.add("user_info");
        tables.add("user_integral");
        tables.add("user_login_record");


//        FastAutoGenerator.create(url, username, password)
//                //全局配置
//                .globalConfig(builder -> {
//                    builder.fileOverride()   //	开启覆盖之前生成的文件
//                            .disableOpenDir()  //禁止打开输出目录
//                            .outputDir(System.getProperty("user.dir") + "\\src\\main\\java")   //指定输出目录
//                            .author("zhengzg")   //作者名
//                            .enableSwagger()     //开启 swagger 模式
//                            .dateType(DateType.TIME_PACK)   //时间策略
//                            .commentDate("yyyy-MM-dd");   //注释日期
//                })
//                //包配置
//                .packageConfig(builder -> {
//                    builder.parent("com.zzg.srb.core")     //父包名
//                            .service("service")             //	Service 包名
//                            .serviceImpl("service.impl")    //Service Impl 包名
//                            .mapper("mapper")               //Mapper 包名
//                            .xml("mapper.xml")              //	Mapper XML 包名
//                            .controller("controller")       //Controller 包名
//                            .other("config")                //自定义文件包名	输出自定义文件时所用到的包名
//                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));//指定xml位置
//                })
//                //策略配置
//                .strategyConfig(builder -> {
//                    builder.addInclude(tables)
//                            .enableCapitalMode()
//                            .serviceBuilder()
//                            .formatServiceFileName("%sService")//服务层接口名后缀
//                            .formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
//                            .entityBuilder()
//                            .enableLombok()//实体类使用lombok,需要自己引入依赖
//                            .idType(IdType.AUTO)//主键策略
//                            .logicDeleteColumnName("is_deleted")//逻辑删除字段，使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中，而是在条件字段中
//                            .enableTableFieldAnnotation()//加上字段注解@TableField
//                            .controllerBuilder()
//                            .formatFileName("%sController")//控制类名称后缀
//                            .enableRestStyle()
//                            .mapperBuilder()
//                            .superClass(BaseMapper.class)
//                            .formatMapperFileName("%sMapper")
//                            .enableMapperAnnotation()
//                            .formatXmlFileName("%sMapper");
//                })
//                .execute();
    }
}
